#include <iostream>

int const maxn = 13;
char da[maxn][maxn];
int n, m;

bool inrange(int x, int y)
{
	return (0 <= x && x < n) && (0 <= y && y < m);
}

int const opt[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};

bool judge(int x, int y)
{
	char dest = da[x][y];
	for (int i = 0; i < 4; i++) {
		int px = x + opt[i][0], py = y + opt[i][1];
		if (inrange(px, py)) {
			std::swap(da[x][y], da[px][py]);
			int row = 0;
			for (int i = py; i >= 0; i--) {
				if (da[px][i] == dest) row++;
				else				  break;
			}
			for (int i = py+1; i < m; i++) {
				if (da[px][i] == dest) row++;
				else				  break;
			}
			if (row >= 3) {
				std::swap(da[x][y], da[px][py]);
				return true;
			}
			int col = 0;
			for (int i = px; i >= 0; i--) {
				if (da[i][py] == dest) col++;
				else				  break;
			}
			for (int i = px+1; i < n; i++) {
				if (da[i][py] == dest) col++;
				else				  break;
			}
			if (col >= 3) {
				std::swap(da[x][y], da[px][py]);
				return true;
			}
			std::swap(da[x][y], da[px][py]);
		}
	}
	return false;
}

int main()
{
	int T;
	std::cin >> T;
	for (int ti = 1; ti <= T; ti++) {
		std::cout << "Case #" << ti << ": ";
		std::cin >> n >> m;

		for (int i = 0; i < n; i++)
			for (int j = 0; j < m; j++) std::cin >> da[i][j];

		int ans = 0;
		for (int i = 0; i < n; i++)
			for (int j = 0; j < m; j++)
				if (judge(i, j)) {
					//std::cout << i << ' ' << j << '\n';
					ans++;
				}

		std::cout << ans << '\n';
	}

}
